package mspbots.cw.client.core.data;

import mspbots.cw.client.core.app.SyncRequest;
import mspbots.cw.client.core.client.ClientProperties;
import reactor.core.publisher.Mono;

/**
 * BaseSyncService
 *
 * @author <a href="https://github.com/vnobo">Alex bob</a>
 * @date Created by 2020/7/10
 */
public interface BaseSyncService {

    /**
     * sync all to mq get data
     *
     * @param properties sync property
     * @return Mono<Void> default mono
     */
    default Mono<Void> syncFast(ClientProperties properties) {
        return Mono.empty();
    }

    /**
     * sync all data result
     *
     * @param properties sync property
     * @return Mono<Void> default mono
     */
    default Mono<Void> syncSlower(ClientProperties properties) {
        return Mono.empty();
    }

    /**
     * sync all data result
     *
     * @param properties sync property
     * @return Mono<Void> default mono
     */
    default Mono<Void> syncSlow(ClientProperties properties) {
        return Mono.empty();
    }

    /**
     * sync all data result
     *
     * @param properties  sync property
     * @param syncRequest sync syncRequest property
     * @return Mono<Void> default mono
     */
    default Mono<Void> manualSync(ClientProperties properties, SyncRequest syncRequest) {
        return Mono.empty();
    }


}
